X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/blobdiff_plain/38c7d3f9eb7d63937c6654ff5dd6046ce02dd59c..74c155708d85abfc2cf227c08de4f27003015b3f:/Super%20Polarity/Actors/Actor.cs diff --git a/Super Polarity/Actors/Actor.cs b/Super Polarity/Actors/Actor.cs index 588ff14..8c71af0 100644 --- a/Super Polarity/Actors/Actor.cs +++ b/Super Polarity/Actors/Actor.cs @@ -10,7 +10,7 @@ namespace SuperPolarity { class Actor { - protected Game game; + protected SuperPolarity game; public List Children; @@ -18,6 +18,9 @@ namespace SuperPolarity protected Texture2D Texture; protected Vector2 Origin; public bool Active; + public Rectangle Box; + protected Vector4 BoxDimensions; + protected Texture2D BoxTexture; // Physical Properties public Vector2 Position; @@ -28,6 +31,13 @@ namespace SuperPolarity // Constraints / Behavior protected float MaxVelocity; protected float AccelerationRate; + protected int HP; + protected bool Immortal; + public bool Dying; + public int Value; + protected Color Color; + + public Actor Parent; public int Width { @@ -39,7 +49,7 @@ namespace SuperPolarity get { return Texture.Height; } } - public Actor(Game newGame) + public Actor(SuperPolarity newGame) { game = newGame; } @@ -58,6 +68,27 @@ namespace SuperPolarity MaxVelocity = 5; AccelerationRate = 10; + + HP = 1; + Immortal = false; + BoxDimensions.X = 20; + BoxDimensions.Y = 20; + BoxDimensions.W = 20; + BoxDimensions.Z = 20; + + Dying = false; + Value = 1; + + InitBox(); + BoxTexture = new Texture2D(game.GraphicsDevice, 1, 1); + BoxTexture.SetData(new Color[] { Color.White }); + + Color = Color.White; + } + + protected void InitBox() + { + Box = new Rectangle((int)(Position.X - BoxDimensions.X), (int)(Position.Y - BoxDimensions.X), (int)(BoxDimensions.X + BoxDimensions.W), (int)(BoxDimensions.Y + BoxDimensions.Z)); } public void AutoDeccelerate(GameTime gameTime) @@ -120,6 +151,13 @@ namespace SuperPolarity Move(gameTime); ChangeAngle(); CheckOutliers(); + UpdateBox(); + } + + protected virtual void UpdateBox() + { + Box.X = (int)(Position.X - BoxDimensions.X); + Box.Y = (int)(Position.Y - BoxDimensions.Y); } public virtual void Move(GameTime gameTime) @@ -167,7 +205,8 @@ namespace SuperPolarity child.Draw(spriteBatch); } - spriteBatch.Draw(Texture, Position, null, Color.White, Angle, Origin, 1f, SpriteEffects.None, 0f); + spriteBatch.Draw(Texture, Position, null, Color, Angle, Origin, 1f, SpriteEffects.None, 0f); + spriteBatch.Draw(BoxTexture, Box, new Color(255, 0, 255, 25)); } void CheckOutliers() @@ -183,5 +222,26 @@ namespace SuperPolarity } } } + + public virtual void Collide(Actor other, Rectangle collision) + { + } + + public void TakeDamage(int amount) + { + if (!Immortal) + { + HP = HP - amount; + if (HP < 0) + { + Die(); + } + } + } + + protected virtual void Die() + { + Dying = true; + } } }